package com.eduagent.xwqeduagent.api.characterRecognition.HandwrittenTextRecognition;

import java.io.IOException;
import java.util.List;

/**
 * 手写文字识别API使用示例
 */
public class HandwrittenTextRecognitionExample {

    public static void main(String[] args) {
        // 讯飞开放平台应用的APPID和API KEY
        String appId = "637d1630";
        String apiKey = "850ccd0e77cbbf801d2f0265031e5c0f";
        
        // 要识别的图片路径
        String imagePath = "C:\\Users\\XWQ\\Desktop\\518016ea3f4614d19560c46e7cd3f89.png";
        
        // 创建API实例
        HandwrittenTextRecognitionAPI api = new HandwrittenTextRecognitionAPI(appId, apiKey);
        
        try {
            // 调用API识别文字（中英文，包含位置信息）
            String jsonResult = api.recognizeFromFile(imagePath, "cn|en", "true");
            System.out.println("原始JSON结果：");
            if (jsonResult == null) {
                System.out.println("API 返回的结果为 null");
            } else if (jsonResult.isEmpty()) {
                System.out.println("API 返回的结果为空字符串");
            } else {
                System.out.println("返回结果长度: " + jsonResult.length());
                System.out.println(jsonResult);
            }
            
            // 解析识别结果
            HandwrittenTextRecognitionResult result = HandwrittenTextRecognitionResult.parseResult(jsonResult);
            
            if (result.isSuccess()) {
                // 获取识别出的所有文本行
                List<String> textLines = result.getRecognizedTexts();
                System.out.println("\n识别出的文本行：");
                for (int i = 0; i < textLines.size(); i++) {
                    System.out.println((i+1) + ". " + textLines.get(i));
                }
                
                // 获取合并后的文本
                String allText = result.getRecognizedText();
                System.out.println("\n合并后的文本：");
                System.out.println(allText);
            } else {
                System.out.println("\n识别失败：");
                System.out.println("错误码：" + result.getCode());
                System.out.println("错误描述：" + result.getDesc());
                System.out.println("会话ID：" + result.getSid());
            }
        } catch (IOException e) {
            System.out.println("发生IO异常: " + e.getMessage());
            e.printStackTrace();
        } catch (Exception e) {
            System.out.println("发生异常: " + e.getMessage());
            e.printStackTrace();
        }
    }
    
    /**
     * 使用API的一般步骤：
     * 
     * 1. 创建API实例：
     *    HandwrittenTextRecognitionAPI api = new HandwrittenTextRecognitionAPI(appId, apiKey);
     * 
     * 2. 选择合适的方法识别文字：
     *    - 从文件路径识别：api.recognizeFromFile(imagePath, language, location)
     *    - 从字节数组识别：api.recognizeFromByteArray(imageByteArray, language, location)
     *    - 从Base64编码识别：api.recognizeFromBase64(imageBase64, language, location)
     * 
     * 3. 解析识别结果：
     *    HandwrittenTextRecognitionResult result = HandwrittenTextRecognitionResult.parseResult(jsonResult);
     * 
     * 4. 获取识别出的文本：
     *    - 获取所有文本行：result.getRecognizedTexts()
     *    - 获取合并后的文本：result.getRecognizedText()
     *    
     * 5. 处理异常情况：
     *    - 检查是否识别成功：result.isSuccess()
     *    - 获取错误信息：result.getCode(), result.getDesc()
     */
} 